package com.wenhuitec.productlib.ui.activity;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.alibaba.fastjson.JSONObject;
import com.gzwh.weblib.bean.NzProductCategory;
import com.gzwh.weblib.bean.Result;
import com.gzwh.weblib.utils.MyObserver;
import com.gzwh.weblib.utils.RequestUtils;
import com.wenhuitec.productlib.R;
import com.wenhuitec.productlib.ui.adapter.CategoryManagerAdapter;
import com.wenhuitec.productlib.ui.adapter.sku.SkuEditAdapter;
import com.wenhuitec.sysui.TitleBuilder;

import java.util.ArrayList;
import java.util.List;

public class SkuEditActivity extends AppCompatActivity {

    private Context mContext;

    private RecyclerView skuRv;

    private CategoryManagerAdapter mCategoryManagerAdapter;

    private SkuEditAdapter skuEditAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_product_sku_edit);
        this.mContext = this;
        new TitleBuilder(this)
                .setTitleText("商品规格")
//                .setLeftIco(R.drawable.yp)
                .setLeftIcoListening((view) -> finish());
        skuRv = findViewById(R.id.skuRv);

        skuEditAdapter = new SkuEditAdapter(mContext, new ArrayList<>(), null);
        skuRv.setLayoutManager(new LinearLayoutManager(mContext));//设置布局管理器
        skuRv.setAdapter(skuEditAdapter);
        skuEditAdapter.addList();
        findViewById(R.id.addSkuBut).setOnClickListener(view -> {
            skuEditAdapter.addList();
        });
        findViewById(R.id.submitBut).setOnClickListener(view -> {
            String jsonStr = JSONObject.toJSONString(skuEditAdapter.getSkuList());
            Intent intent = new Intent();// 重新声明一个意图。

            intent.putExtra("data", jsonStr); // 将three回传到意图中。
            // 通过Intent对象返回结果，调用setResult方法。
            setResult(RESULT_OK, intent);// resultCode为大于1的数，随意选取，为2即可。
            finish();// 结束当前Activity的生命周期。
        });


    }

    //事件分发方法重写
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        //如果是点击事件，获取点击的view，并判断是否要收起键盘
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            //获取目前得到焦点的view
            View v = getCurrentFocus();
            //判断是否要收起并进行处理
            if (isShouldHideKeyboard(v, ev)) {
                hideKeyboard(v.getWindowToken());
                v.clearFocus();
            }
        }
        //这个是activity的事件分发，一定要有，不然就不会有任何的点击事件了
        return super.dispatchTouchEvent(ev);
    }

    //判断是否要收起键盘
    private boolean isShouldHideKeyboard(View v, MotionEvent event) {
        //如果目前得到焦点的这个view是editText的话进行判断点击的位置
        if (v instanceof EditText) {
            int[] l = {0, 0};
            v.getLocationInWindow(l);
            int left = l[0],
                    top = l[1],
                    bottom = top + v.getHeight(),
                    right = left + v.getWidth();
            // 点击EditText的事件，忽略它。
            return !(event.getX() > left) || !(event.getX() < right)
                    || !(event.getY() > top) || !(event.getY() < bottom);
        }
        // 如果焦点不是EditText则忽略，这个发生在视图刚绘制完，第一个焦点不在EditText上
        return false;
    }

    //隐藏软键盘并让editText失去焦点
    private void hideKeyboard(IBinder token) {
        if (token != null) {
            //这里先获取InputMethodManager再调用他的方法来关闭软键盘
            //InputMethodManager就是一个管理窗口输入的manager
            InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            if (im != null) {
                im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
    }

}
